#ifndef __SQL_H__
#define __SQL_H__

#include <sqlite3.h>
#include <stdio.h>
#include <string.h>
#include "cJSON.h"
#include "process.h"

// 状态码
#define remain 0 // 住院/在职
#define leave 1  // 出院/离职
#define mild 0   // 轻症
#define severe 2 // 重症

// sql命令长度
#define SQLSIZE 1024

// 性别码
enum gender
{
    woman,
    man,
};

// 病人信息
typedef struct patient
{
    int patientID;        // 病人ID
    char patientName[32]; // 病人姓名
    int patientAge;       // 病人年龄
    int patientGender;    // 病人性别
    char illness[32];     // 患病名称
    int roomID;           // 病房
    double heart_rate;    // 心率
    double O2;            // 血氧
    int doctorID;         // 医生ID
    char doctorName[32];  // 医生姓名
    char time[32];        // 记录时间
} patient_t;

// 病房信息
typedef struct room
{
    int roomID;        // 房间号
    float temperature; // 温度
    float humidity;    // 湿度
    int infrared;      // 人体红外
    int flame;         // 火焰
    int call;          // 呼叫
    int sprayer;       // 喷头
    int ozone;         // 臭氧
    int ultraviolet;   // 紫外线
    int fan;           // 风扇
    char time[32];     // 记录时间
} room_t;

// 用户信息
typedef struct user
{
    char username[32]; // 用户名
    char password[32]; // 用户密码
    int authority;     // 用户权限
} user_t;

sqlite3 *creat_SQL(const char *path);                                    // 创建或打开数据库
int creat_table(sqlite3 *db, char *table);                               // 在指定数据库中创建数据表
int insert_values(sqlite3 *db, char *table, void *data);                 // 向数据表中插入信息
int select_value(sqlite3 *db, char *table, char *string, char **result); // 查找某数据
int update_value(sqlite3 *db, char *table, char *string);                // 修改数据库中信息
int creat_userDB(sqlite3 **db);                                          // 创建或打开用户库
int creat_patientDB(sqlite3 **db);                                       // 创建或打开病人库
int creat_roomDB(sqlite3 **db);                                          // 创建或打开病房库
int creat_patientTable(sqlite3 *db, int patientID);                      // 创建病人表
int creat_roomTable(sqlite3 *db, int roomID);                            // 创建病房表
int creat_userTable(sqlite3 *db);                                        // 创建用户表
int insert_patient(sqlite3 *db, std_node_t *data);                       // 向病人表中插入信息
int insert_room(sqlite3 *db, std_node_t *data);                          // 向病房表中插入信息
int insert_user(sqlite3 *db, std_node_t *data);                          // 向用户表中插入信息
int update_password(sqlite3 *db, char *username, char *password);        // 修改用户密码
int creat_patientIDTable(sqlite3 *db);                                   // 创建病人ｉｄ表

#endif